package com.pe.pgn.clubpgn.domain;

import java.math.BigDecimal;
import java.util.Calendar;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.Type;
import org.springframework.format.annotation.DateTimeFormat;

@Entity
@Table(name = "clpd_documento_mov_articulo")
public class ClpdDocumentoMovArticulo extends CamposAuditoria {

	private static final long serialVersionUID = -6153162178701221941L;
	
	private Long id;
	private ClpbDocumentoMovArticulo clpbDocumento;
	private ClpdArticulo clpdArticulo;
	private BigDecimal vaCantidad;
	private ClprPremioCatalogo clprPremio;
	private BigDecimal vaStockDisponibleAsignado;
	private boolean stDocumentoMovArticulo;
	private String coSerie;
	private Long coAlmacenOrigen;
	private Long coCatalogoOrigen;
	private Long coAlmacenDestino;
	private Long coCatalogoDestino;
	private Long coPremioDestino;
	
	@Id
	@Column(name="id")
    @SequenceGenerator(name="seqdocumentomovarticulod", sequenceName="seq_documento_mov_articulo_d")
    @GeneratedValue(generator="seqdocumentomovarticulod")	
	public Long getId() {
		return id;
	}

    @ManyToOne(targetEntity = ClpbDocumentoMovArticulo.class)
    @JoinColumn(name="co_documento_mov_articulo")
	public ClpbDocumentoMovArticulo getClpbDocumento() {
		return clpbDocumento;
	}

    @ManyToOne(targetEntity = ClpdArticulo.class)
    @JoinColumn(name="co_articulo")
	public ClpdArticulo getClpdArticulo() {
		return clpdArticulo;
	}


    @Column(name = "va_cantidad")
	public BigDecimal getVaCantidad() {
		return vaCantidad;
	}


    @ManyToOne(targetEntity = ClprPremioCatalogo.class)
    @JoinColumn(name="co_premio")    
	public ClprPremioCatalogo getClprPremio() {
		return clprPremio;
	}


    @Column(name = "va_stock_disponible_asignado")
	public BigDecimal getVaStockDisponibleAsignado() {
		return vaStockDisponibleAsignado;
	}

    @Column(name = "st_documento_mov_articulo")
	@Type(type = "yes_no")
	public boolean isStDocumentoMovArticulo() {
		return stDocumentoMovArticulo;
	}


    @Column(name = "co_serie")
	public String getCoSerie() {
		return coSerie;
	}

    @Column(name = "co_almacen_origen")
	public Long getCoAlmacenOrigen() {
		return coAlmacenOrigen;
	}


    @Column(name = "co_catalogo_origen")
	public Long getCoCatalogoOrigen() {
		return coCatalogoOrigen;
	}
    
    @Column(name = "co_almacen_destino")
	public Long getCoAlmacenDestino() {
		return coAlmacenDestino;
	}

    @Column(name = "co_catalogo_destino")
	public Long getCoCatalogoDestino() {
		return coCatalogoDestino;
	}
    
    @Column(name = "co_premio_destino")
	public Long getCoPremioDestino() {
		return coPremioDestino;
	}
	
    @Column(name = "co_usuario_creador", updatable = false, nullable = false, length = 30)
	public String getCoUsuarioCreador() {
		return coUsuarioCreador;
	}

    @Column(name = "da_fecha_creacion", updatable = false, nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "S-")
	public Calendar getDaFechaCreacion() {
		return daFechaCreacion;
	}

	@Column(name = "co_usuario_modificador", length = 30)
	public String getCoUsuarioModificador() {
		return coUsuarioModificador;
	}

    @Column(name = "da_fecha_modificacion")
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "S-")
	public Calendar getDaFechaModificacion() {
		return daFechaModificacion;
	}    

	public void setId(Long id) {
		this.id = id;
	}

	public void setClpbDocumento(ClpbDocumentoMovArticulo clpbDocumento) {
		this.clpbDocumento = clpbDocumento;
	}

	public void setClpdArticulo(ClpdArticulo clpdArticulo) {
		this.clpdArticulo = clpdArticulo;
	}

	public void setClprPremio(ClprPremioCatalogo clprPremio) {
		this.clprPremio = clprPremio;
	}

	public void setStDocumentoMovArticulo(boolean stDocumentoMovArticulo) {
		this.stDocumentoMovArticulo = stDocumentoMovArticulo;
	}

	public void setCoSerie(String coSerie) {
		this.coSerie = coSerie;
	}

	public void setCoAlmacenDestino(Long coAlmacenDestino) {
		this.coAlmacenDestino = coAlmacenDestino;
	}

	public void setCoCatalogoDestino(Long coCatalogoDestino) {
		this.coCatalogoDestino = coCatalogoDestino;
	}	
	
	public void setVaCantidad(BigDecimal vaCantidad) {
		this.vaCantidad = vaCantidad;
	}

	public void setVaStockDisponibleAsignado(BigDecimal vaStockDisponibleAsignado) {
		this.vaStockDisponibleAsignado = vaStockDisponibleAsignado;
	}

	public boolean equals(Object o) {
		return false;
	}

	public int hashCode() {
		return 0;
	}

	public String toString() {
		return this.coSerie;
	}

	public void setCoAlmacenOrigen(Long coAlmacenOrigen) {
		this.coAlmacenOrigen = coAlmacenOrigen;
	}

	public void setCoCatalogoOrigen(Long coCatalogoOrigen) {
		this.coCatalogoOrigen = coCatalogoOrigen;
	}

	public void setCoPremioDestino(Long coPremioDestino) {
		this.coPremioDestino = coPremioDestino;
	}
}
